package de.lang.rollo.controller.configurations;

import java.util.List;

import org.hibernate.validator.constraints.NotEmpty;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.pi4j.io.gpio.Pin;

import de.lang.rollo.controller.model.json.PinDeserializer;
import de.lang.rollo.controller.model.json.PinSerializer;
import de.lang.rollo.controller.serialization.PinListDeserializer;

public class PinConfiguration {

	@JsonProperty
	Boolean overWriteConfig = false;

	@JsonProperty("motorenPinRunTimes")
	List<Long> motorenPinRunTimes;

	@JsonProperty
//	@JsonSerialize(using = PinSerializer.class)
//	@JsonIgnore
	List<Pin> motorenPins;

//	@JsonProperty
//	List<Integer> motorenPins;
//	@JsonProperty
//	List<Integer> schalterPins;
//	public void setMotorenPins(List<Pin> motorenPins) {
//		this.motorenPins = motorenPins;
//	}
		@JsonDeserialize(contentUsing = PinDeserializer.class)
	public List<Pin> getMotorenPins() {
		return motorenPins;
	}
//
	@JsonProperty
//	@JsonSerialize(using = PinSerializer.class)
//	@JsonDeserialize(using = PinDeserializer.class)
//	@JsonIgnore
	List<Pin> schalterPins;
//	
//	public void setSchalterPins(List<Pin> schalterPins) {
//		this.schalterPins = schalterPins;
//	}
	@JsonDeserialize(contentUsing=PinDeserializer.class)
	public List<Pin> getSchalterPins() {
		return schalterPins;
	}


	@JsonProperty
	List<String> motorenNamen;

	public void setOverWriteConfig(boolean overWriteConfig) {
		this.overWriteConfig = overWriteConfig;
	}

	public void setMotorenPinRunTimes(List<Long> motorenPinRunTimes) {
		this.motorenPinRunTimes = motorenPinRunTimes;
	}




	public void setMotorenNamen(List<String> motorenNamen) {
		this.motorenNamen = motorenNamen;
	}

	public void setAlleBedienenPressDiff(long alleBedienenPressDiff) {
		this.alleBedienenPressDiff = alleBedienenPressDiff;
	}

	@JsonProperty
	long alleBedienenPressDiff;

	public List<Long> getMotorenPinRunTimes() {
		return motorenPinRunTimes;
	}

	public Boolean getOverWriteConfig() {
		return overWriteConfig;
	}


	public List<String> getMotorenNamen() {
		return motorenNamen;
	}

	public long getAlleBedienenPressDiff() {
		return alleBedienenPressDiff;
	}

}
